package Question4_8;
import java.util.ArrayList;
import CareerCupLibrary.TreeNode;
public class Question {
public static void findSum(TreeNode head, int sum, ArrayList<Integer> buffer, int level) {
if (head == null) {
return;
}
int tmp = sum;
buffer.add(head.data);
for (int i = level;i >- 1; i--){
tmp -= buffer.get(i);
if (tmp == 0) {
print(buffer, i, level);
}
}
ArrayList<Integer> c1 = (ArrayList<Integer>) buffer.clone();
ArrayList<Integer> c2 = (ArrayList<Integer>) buffer.clone();
findSum(head.left, sum, c1, level + 1);
findSum(head.right, sum, c2, level + 1);
}
private static void print(ArrayList<Integer> buffer, int level, int i2) {
for (int i = level; i <= i2; i++) {
System.out.print(buffer.get(i) + " ");
}
System.out.println();
}
public static void main(String [] args){
TreeNode root = new TreeNode(5);
root.left = new TreeNode(3);
root.right = new TreeNode(1);
root.left.left = new TreeNode(4);
root.left.right = new TreeNode(8);
root.right.left = new TreeNode(2);
root.right.right = new TreeNode(6);
findSum(root, 8, new ArrayList<Integer>(), 0);
}
}